package main

import "fmt"

func main() {

	// 初始化
	// 1. 变量声明， 2. 使用内置函数make()
	var ch chan int // 这种方式声明的管道，值为nil
	fmt.Println(ch)
	ch1 := make(chan string)    // 无缓冲管道
	ch2 := make(chan string, 5) // 有缓冲管道

	go func() {
		ch1 <- "1" // 无缓冲管道会阻塞
	}()
	fmt.Println(<-ch1)
	ch2 <- "2"
	ch2 <- "3"
	fmt.Println(<-ch2)
	fmt.Println(<-ch2)
}

var lock = make(chan int, 1)
var count int

//Lock 实现互斥锁功能
func Lock() {
	lock <- 1 // 长度为1的channel, 第二个进来就阻塞了
	count++
	<-lock
}
